<?php

namespace Apis;

use GuzzleHttp\Client;
use Psr\Http\Message\ResponseInterface;

class SinaStockApi
{
    protected $client = null;

    public function __construct()
    {
        $this->client = new Client([
            'timeout' => 5.0,
        ]);
    }

    public function getContent(ResponseInterface $rs)
    {
        $encoding = null;
        $type = $rs->getHeader('content-type');
        if (isset($type[0])) {
            preg_match("/.*charset=(.*)/", $type[0], $matchs);
            if (isset($matchs[1])) {
                $encoding = trim($matchs[1], '"');
            }
        }
        $content = $rs->getBody()->getContents();
        if (!empty($encoding)) {
            $content = mb_convert_encoding($content, "UTF-8", $encoding);
        }
        return $content;
    }

    public function getPrice($code)
    {
        $rs = $this->client->get('http://hq.sinajs.cn/list=' . $code);
//        ->getBody()->getContents();
        $content = $this->getContent($rs);
        preg_match("/\"(.*)\"/", $content, $matchs);
        $rs = $matchs[1] ?? "";
        $rs = explode(',', $rs);

//        0：”大秦铁路”，股票名字；
//1：”27.55″，今日开盘价；
//2：”27.25″，昨日收盘价；
//3：”26.91″，当前价格；
//4：”27.55″，今日最高价；
//5：”26.20″，今日最低价；
//6：”26.91″，竞买价，即“买一”报价；
//7：”26.92″，竞卖价，即“卖一”报价；
//8：”22114263″，成交的股票数，由于股票交易以一百股为基本单位，所以在使用时，通常把该值除以一百；
//9：”589824680″，成交金额，单位为“元”，为了一目了然，通常以“万元”为成交金额的单位，所以通常把该值除以一万；
//10：”4695″，“买一”申请4695股，即47手；
//11：”26.91″，“买一”报价；
//12：”57590″，“买二”
//13：”26.90″，“买二”
//14：”14700″，“买三”
//15：”26.89″，“买三”
//16：”14300″，“买四”
//17：”26.88″，“买四”
//18：”15100″，“买五”
//19：”26.87″，“买五”
//20：”3100″，“卖一”申报3100股，即31手；
//21：”26.92″，“卖一”报价
//    (22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”
//30：”2008-01-11″，日期；
//31：”15:05:32″，时间；
        return [
            'name' => $rs[0],
            'price' => $rs[3],
            'date' => $rs[30],
            'time' => $rs[31],
            'max' => $rs[4],
            'min' => $rs[4],
            'buy1' => [
                'price' => $rs[11],
                'num' => $rs[12],
            ],
            'buy2' => [
                'price' => $rs[13],
                'num' => $rs[14],
            ],
            'buy3' => [
                'price' => $rs[15],
                'num' => $rs[16],
            ],
            'buy4' => [
                'price' => $rs[17],
                'num' => $rs[18],
            ],
            'buy5' => [
                'price' => $rs[19],
                'num' => $rs[20],
            ],

            'sell1' => [
                'price' => $rs[21],
                'num' => $rs[22],
            ],
            'sell2' => [
                'price' => $rs[23],
                'num' => $rs[24],
            ],
            'sell3' => [
                'price' => $rs[25],
                'num' => $rs[26],
            ],
            'sell4' => [
                'price' => $rs[27],
                'num' => $rs[28],
            ],


        ];
    }
}